#!/bin/bash

TOMCAT_PATH='/opt/tomcat'
EXAM_PATH='/home/linux_7230263134/Exam'

# get classpath
CP=${TOMCAT_PATH}/lib/servlet-api.jar

# [步骤1]: 准备 CP 变量，使用 for 循环将 webapps/ROOT/WEB-INF/lib 下的所有 jar 包添加到 CP 中
for jar in ${TOMCAT_PATH}/webapps/ROOT/WEB-INF/lib/* ; do
    CP=${CP}:${jar}
done
echo "[步骤1] 成功：CP 变量准备完成"

# [步骤2]: 编译 code 目录下的 Java 文件，并将生成的 class 文件放入 target 目录中
# 判断编译是否成功，如果失败则退出

# 创建 target 目录（如不存在）
if [ ! -d "target" ]; then
    mkdir -p target
fi

# 进入 code 目录进行编译，避免路径问题
cd code || { echo "[步骤2] 失败：无法进入 code 目录"; exit 1; }
echo "[步骤2] 成功：进入 code 目录"

# 执行编译命令，使用双引号包裹变量防止路径错误
if ! javac -cp "${CP}" -d ../target *.java; then
    echo "[步骤2] 失败：编译失败"
    exit 1
else
    echo "[步骤2] 成功：编译完成"
fi

# 返回原始目录
cd ..
echo "[步骤2] 成功：返回原始目录"

# [步骤3]: 部署 class 文件到 webapps/ROOT/WEB-INF/classes 中，覆盖原文件
if cp -rf target/* ${TOMCAT_PATH}/webapps/ROOT/WEB-INF/classes/; then
    echo "[步骤3] 成功：部署完成"
else
    echo "[步骤3] 失败：部署失败"
    exit 1
fi

# [步骤4]: 重启 Tomcat
# 假设 tomcat 的启动脚本位于 TOMCAT_PATH/bin 下
if ${TOMCAT_PATH}/bin/shutdown.sh; then
    echo "[步骤4] 成功：Tomcat 关闭"
else
    echo "[步骤4] 失败：Tomcat 关闭失败"
    exit 1
fi

sleep 3

if ${TOMCAT_PATH}/bin/startup.sh; then
    echo "[步骤4] 成功：Tomcat 启动"
else
    echo "[步骤4] 失败：Tomcat 启动失败"
    exit 1
fi